﻿--****en el servidor asereplicado****
--creación de la base de datos
use master
go

create database suscripciones_bdd
go 

use suscripciones_bdd
go

--  tablas de tlaxcala
create table suscriptor_tlax
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)		
)


create table suscripcion_tlax
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)


-- definicion de llaves primarias en las tablas de traxcala
alter table suscriptor_tlax add constraint suscriptor_idtlaxpk primary key(suscriptor_id)
alter table suscripcion_tlax add constraint foliotlaxpk primary key(folio)


-- llaves foraneas
alter table suscripcion_tlax add constraint publicacion_idtlaxfk foreign key (publicacion_id) references publicacion(publicacion_id)

-- procedimiento de insercion para que sea utilizado de forma remota
CREATE PROCEDURE inserta_publicacion_tlaxcala
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
insert into publicacion_tlax (publicacion_id,tipo_publicacion_id,frecuencia_salida_id,editorial_id,nombre)
values (@publicacion_id,@tipo_publicacion_id,@frecuencia_salida_id,@editorial_id,@nombre)

-- procedimiento de borrado para que sea utilizado de forma remota
CREATE PROCEDURE eliminar_publicacion_tlaxcala
	@publicacion_id				numeric(10),
AS
delete from publicacion_tlax where publicacion_id=@publicacion_id

-- procedimiento de actualizacion para que sea utilizado de forma remota
CREATE PROCEDURE actualizacion_publicacion_tlaxcala
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
update publicacion_tlax set tipo_publicacion_id=@tipo_publicacion_id,
							frecuencia_salida_id=@frecuencia_salida,
							editorial_id=@editorial_id,
							nombre=@nombre 
where publicacion_id=@publicacion_id	


-- -------------------------------------------------------------------------------
-- -------------------------------------------------------------------------------
--						ESTE ES OTRO SERVIDOR
-- -------------------------------------------------------------------------------
-- -------------------------------------------------------------------------------

-- tablas de tabasco
 create table suscriptor_tab
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)		
)



create table suscripcion_tab
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)

alter table suscriptor_tab add constraint suscriptor_tabidpk primary key(suscriptor_id)
alter table suscripcion_tab add constraint foliotabbpk primary key(folio)



-- llaves foraneas

alter table suscripcion_tab add constraint publicacion_idtabfk foreign key (publicacion_id) references publicacion(publicacion_id)


-- procedimiento de insercion para que sea utilizado de forma remota
CREATE PROCEDURE inserta_publicacion_tab
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
insert into publicacion_tam(publicacion_id,tipo_publicacion_id,frecuencia_salida_id,editorial_id,nombre)
values (@publicacion_id,@tipo_publicacion_id,@frecuencia_salida_id,@editorial_id,@nombre)

-- procedimiento de borrado para que sea utilizado de forma remota
CREATE PROCEDURE eliminar_publicacion_tab
	@publicacion_id				numeric(10),
AS
delete from publicacion_tab where publicacion_id=@publicacion_id

-- procedimiento de actualizacion para que sea utilizado de forma remota
CREATE PROCEDURE actualizacion_publicacion_tab
	@publicacion_id				numeric(10),
	@tipo_publicacion_id		numeric(10),
	@frecuencia_salida_id 		numeric(10),
	@editorial_id 				numeric(10),
	@nombre 					varchar(150)
AS
update publicacion_tab set 	tipo_publicacion_id=@tipo_publicacion_id,
							frecuencia_salida_id=@frecuencia_salida,
							editorial_id=@editorial_id,
							nombre=@nombre 
where publicacion_id=@publicacion_id	


-- creacion de proxy table de editoriales
create proxy_table editoriales
external table at "BRAHM.suscripciones_bdd.distri7.editoriales"



-- procedimientos de insercion remota en frecuencia_salida y tipo_publicacion
-- ya que estas tablas se encuentran df

-- frecuencia de salida
-- procedimiento de insercion remota
CREATE PROCEDURE inserta_frecuencia_salida
	@frecuencia_salida_id		numeric(10),
	@periodo					varchar(50)
AS
insert into frecuencia_salida(frecuencia_salida_id,periodo)
values (@frecuencia_salida_id,@periodo)

-- procedimiento de borrado remoto
CREATE PROCEDURE eliminar_frecuencia_salida
	@frecuencia_salida_id		numeric(10)
AS
delete from frecuencia_salida where frecuencia_salida_id=@frecuencia_salida_id

-- procedimiento de actualizacion remoto	
CREATE PROCEDURE actualizacion_frecuencia_salida
	@frecuencia_salida_id			numeric(10),
	@periodo						varchar(50)
AS
update frecuencia_salida set	frecuencia_salida_id=@frecuencia_salida_id,
								periodo=@periodo 
where frecuencia_salida_id=@frecuencia_salida_id	

-- tipo publicacion
-- procedimiento de insercion remota
CREATE PROCEDURE inserta_tipo_publicacion
	@tipo_publicacion_id		numeric(10),
	@tipo						varchar(50)
AS
insert into frecuencia_salida(tipo_publicacion_id,tipo)
values (@tipo_publicacion_id,@tipo)

-- procedimiento de borrado remoto
CREATE PROCEDURE eliminar_tipo_publicacion
	@frecuencia_salida_id		numeric(10)
AS
delete from frecuencia_salida where tipo_publicacion_id=@tipo_publicacion_id

-- procedimiento de actualizacion remoto	
CREATE PROCEDURE actualizacion_tipo_publicacion
	@tipo_publicacion_id			numeric(10),
	@tipo						varchar(50)
AS
update frecuencia_salida set	tipo_publicacion_id=@tipo_publicacion_id,
								tipo=@tipo 
where tipo_publicacion_id=@tipo_publicacion_id



-----proxy tables


create existing table publicacion
(
	publicacion_id			numeric(10),
	tipo_publicacion_id		numeric(10),
	frecuencia_salida_id 		numeric(10),
	editorial_id 			numeric(10),
	nombre 			varchar(150)
)external table at "ASEREPLICADO.suscripciones_bdd.dbo.publicacion"



create existing table tipo_publicacion
(
 	tipo_publicacion_id 	numeric(10),
	tipo 			varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.tipo_publicacion"

create existing table editorial
(
 	
	editorial_id 		numeric(10),
	nombre			varchar(50),
	telefono		numeric(12),
	domicilio		varchar(50),
	estado 			varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.editorial"


create existing table genero
(
 	genero_id 		numeric(10),
	tipo 			varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.genero"


create existing table escritor
(
 	escritor_id		numeric(10),
	genero_id		numeric(10)
)external table at "BRAHM.suscripciones_bdd.dbo.escritor"

create existing table frecuencia_salida
(
 	frecuencia_salida_id 	numeric(10),
	periodo 		varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.frecuencia_salida"

create existing table escritor_publicacion
(
	publicacion_id 	numeric(10),
	escritor_id 	numeric(10),
	fecha_inicio 	date
)external table at "BRAHM.suscripciones_bdd.dbo.escritor_publicacion"








---Proxys de fragmentos 

create existing table suscriptor_df
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.suscriptor_df"

create existing table suscriptor_son
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.suscriptor_son"

create existing table suscriptor_tam
(
	suscriptor_id 	numeric(10),
	nombre 			varchar(50),
	apellidos 		varchar(50),
	telefono 		numeric(12),
	domicilio 		varchar(50),
	estado 			varchar(50)
)external table at "BRAHM.suscripciones_bdd.dbo.suscriptor_tam"


create existing table suscripcion_df
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)external table at "BRAHM.suscripciones_bdd.dbo.suscripcion_df"

create existing table suscripcion_son
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)external table at "BRAHM.suscripciones_bdd.dbo.suscripcion_son"

create existing table suscripcion_tam
(
	folio 			numeric(10),
	suscriptor_id 	numeric(10),
	publicacion_id 	numeric(10),
	fecha_inicio 	date,
	duracion 		numeric(5)
)external table at "BRAHM.suscripciones_bdd.dbo.suscripcion_tam"




